var path = require('path');
var sha1 = require('sha1');
var express = require('express');
var router = express.Router();

var UserModel = require('../models/users');
var checkNotLogin = require('../middlewares/check').checkNotLogin;

// GET /signup 注册页
router.get('/', checkNotLogin, function(req, res, next) {
    res.render('signup');
});

// POST /signup 用户注册
router.post('/', checkNotLogin, function(req, res, next) {
    var name = req.fields.name;
    var gender = req.fields.gender;
    var bio = req.fields.bio;
    var avatar = req.files.avatar.path.split(path.sep).pop();
    var password = req.fields.password;
    var repassword = req.fields.repassword;
    console.log(req);
    // 校验参数
    try {
        if(!(name.length >= 1 && name.length <= 10)) {
            throw new Error('名字请限制在1-10个字符');
        }
        if(['m','f','x'].indexOf(gender) === -1) {
            throw new Error('性别只能是m、f或x');
        }
        if (!(bio.length >= 1 && bio.length <= 30)) {
        throw new Error('个人简介请限制在 1-30 个字符');
        }
        if (!req.files.avatar.name) {
        throw new Error('缺少头像');
        }
        if (password.length < 6) {
        throw new Error('密码至少 6 个字符');
        }
        if (password !== repassword) {
        throw new Error('两次输入密码不一致');
        }
    } catch (error) {
        req.flash('error', e.message);
        return res.redirect('/signup');
    }

    // 明文加密
    password = sha1(password);

    // 待写入数据库的用户信息
    var user = {
        name: name,
        password: password,
        gender: gender,
        bio: bio,
        avatar: avatar
    };
console.log(user);
    // 用户信息写入数据库
    UserModel.create(user).then(function(result){
        console.log(1);
        // 此user是插入mongodb后的值，包含_id
        user = result.ops[0];
        // 将用户信息存入 session
        delete user.password;
        req.session.user = user;
        // 写入flash
        req.flash('success', '注册成功');
        // 跳转首页
        res.redirect('/posts');
    }).catch(function(e){
        // 用户名被占用则跳回注册页面，而不是错误页
        if(e.message.match('E1100 duplicate key')) {
            req.flash('error', '用户名被占用');
            return res.redirect('/signup');
        }
        next(e);
    });

});

module.exports = router;